package com.it.schoolhomeos.service;

import com.it.schoolhomeos.dto.AttendanceBatchDTO;
import com.it.schoolhomeos.dto.AttendanceStatDTO;
import com.it.schoolhomeos.dto.StudentAttendanceDTO;
import com.it.schoolhomeos.entity.ClassInfo;

import java.time.LocalDate;
import java.util.List;

/**
 * 考勤服务接口
 * 
 * 定义考勤相关的业务逻辑操作
 */
public interface AttendanceService {
    
    /**
     * 获取当前教师班级的近七天考勤统计
     * 
     * @return 近七天的考勤统计列表
     */
    List<AttendanceStatDTO> getLastSevenDaysAttendanceStat();
    
    /**
     * 获取当前教师班级的今日考勤统计
     * 
     * @return 今日考勤统计
     */
    AttendanceStatDTO getTodayAttendanceStat();
    
    /**
     * 获取当前教师班级指定日期的考勤统计
     * 
     * @param date 日期
     * @return 指定日期的考勤统计
     */
    AttendanceStatDTO getAttendanceStatByDate(LocalDate date);
    
    /**
     * 获取当前教师班级指定日期的学生考勤详情
     * 
     * @param date 日期
     * @return 学生考勤详情列表
     */
    List<StudentAttendanceDTO> getStudentAttendanceDetailsByDate(LocalDate date);
    
    /**
     * 批量提交学生考勤
     * 
     * @param attendanceBatchDTO 批量考勤数据
     * @return 提交成功的考勤记录数量
     */
    int submitAttendanceBatch(AttendanceBatchDTO attendanceBatchDTO);
    
    /**
     * 获取当前教师的班级
     * 
     * @return 当前教师的班级
     */
    ClassInfo getCurrentTeacherClass();
    
    /**
     * 家长查看学生考勤记录
     * 
     * @param studentId 学生ID
     * @param startDate 开始日期，可为null
     * @param endDate 结束日期，可为null
     * @return 学生考勤详情列表
     */
    List<StudentAttendanceDTO> getStudentAttendanceByParent(Long studentId, LocalDate startDate, LocalDate endDate);
} 